(function($) {     
    $.fn.pager = function(options) {  
        var opts = $.extend({}, $.fn.pager.defaults, options);    
        return this.each(function() {         
            $(this).empty();
            alert($(this).html());
            $(this).append(renderpager(parseInt(options.pagenumber), parseInt(options.pagecount), options.buttonClickCallback));
            $('.pages li').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto";});    
        });  
    };     
      
    function renderpager(pagenumber, pagecount, buttonClickCallback) {           
        var $pager = $('<ul class="pages"></ul>');         
        $pager.append(renderButton('首页', pagenumber, pagecount, buttonClickCallback)).append(renderButton('上一页', pagenumber, pagecount, buttonClickCallback));         
        var startPoint = 1;   
        var endPoint = 9;  
        var thpoint="<li class='thpoint'>...</li>";  
        if (pagenumber > 4) {  
            startPoint = pagenumber - 4;  
            endPoint = pagenumber + 4;  
        }  
        if (endPoint > pagecount) {  
            startPoint = pagecount - 8;  
            endPoint = pagecount;  
            thpoint = "";  
        }  
        if (startPoint < 1) {  
            startPoint = 1;  
        }          
        for (var page = startPoint; page <= endPoint; page++) {  
            var currentButton = $('<li class="page-number">' + (page) + '</li>');  
            page == pagenumber ? currentButton.addClass('pgCurrent') : currentButton.click(function() {  
                buttonClickCallback(this.firstChild.data);  
            });  
            currentButton.appendTo($pager);  
        }         
        $pager.append(thpoint).append(renderButton('下一页', pagenumber, pagecount, buttonClickCallback)).append(renderButton('末页', pagenumber, pagecount, buttonClickCallback));  
        $pager.append("<li class='thpoint' style='margin-top:3px;'>共: "+pagecount+" 页</li>");  
        var strgoto = $("<li class='thpoint'>当前<input type='text' value='"+pagenumber+"'maxlength='6' id='gotoval' style='width:20px; height:16px;margin-top:-3px;padding-top:2px;padding-left:10px;'/>页</li>");  
        $pager.append(strgoto);  
        $pager.append(changepage('go',pagecount,buttonClickCallback));  
        return $pager;  
}      
function changepage(buttonLabel,pagecount,buttonClickCallback){  
    var $btngoto = $('<li class="pgNext">'+ buttonLabel+'</li>');  
    $btngoto.click(function() {  
        var gotoval = $('#gotoval').val();  
        var patrn = /^[1-9]{1,20}$/;  
        if (!patrn.exec(gotoval)){  
            alert("请输入非零的正整数！");  
            return false;  
        }  
        var intval = parseInt(gotoval);  
        if(intval > pagecount){  
            alert("您输入的页面超过总页数 "+pagecount);  
            return ;  
        }  
        buttonClickCallback(intval);  
    });  
    return $btngoto;  
}  
  
function renderButton(buttonLabel, pagenumber, pagecount, buttonClickCallback) {       
    var $Button = $('<li class="pgNext">' + buttonLabel + '</li>');     
    var destPage = 1;         
    switch (buttonLabel) {  
        case "首页":  
            destPage = 1;  
            break;  
        case "上一页":     
            destPage = pagenumber - 1;  
            break;  
        case "下一页":  
            destPage = pagenumber + 1;            
        break;  
        case "末页":  
            destPage = pagecount;          
        break;       
    }              
    if (buttonLabel == "首页" || buttonLabel == "上一页") {       
        pagenumber <= 1 ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); });       
    }         
    else {       
        pagenumber >= pagecount ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); });   
    }       
    return $Button;    
 }      
  
 $.fn.pager.defaults = {     
     pagenumber: 1,       
     pagecount: 1};  
 })(jQuery);  